home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / Moscow ML 1.42 / src / mosmllib / CharArray.sml < prev    next >
Encoding:
Text File  |  1997-08-18  |  2.5 KB  |  67 lines  |  [TEXT/R*ch]

  1. (* CharArray -- as of 1995-06-14 *)
  2.  
  3. prim_eqtype array
  4. type elem   = Char.char
  5. type vector = CharVector.vector
  6.  
  7. local 
  8.     prim_val magic : 'a -> 'b = 1 "identity";
  9. in
  10.     val maxLen = Word8Array.maxLen
  11.     val array    : int * elem -> array          = magic Word8Array.array
  12.     val tabulate : int * (int -> elem) -> array = magic Word8Array.tabulate
  13.     val fromList : elem list -> array           = magic Word8Array.fromList
  14.     val length   : array -> int                 = magic Word8Array.length
  15.     val sub      : array * int -> elem          = magic Word8Array.sub
  16.     val update   : array * int * elem -> unit   = magic Word8Array.update
  17.     val extract  : array * int * int option -> vector  
  18.                         = magic Word8Array.extract
  19.     val copy     : {src: array, si: int, len : int option, 
  20.             dst: array, di: int} -> unit = magic Word8Array.copy
  21.     val copyVec  : {src: vector, si: int, len: int option, 
  22.             dst: array, di: int} -> unit = magic Word8Array.copyVec
  23.     val app      : (elem -> unit) -> array -> unit
  24.                         = magic Word8Array.app
  25.  
  26.     fun foldl (f : elem * 'b -> 'b) (e : 'b) (a : array) : 'b
  27.     = Word8Array.foldl (magic f) e (magic a)
  28.  
  29.     fun foldr (f : elem * 'b -> 'b) (e : 'b) (a : array) : 'b
  30.     = Word8Array.foldr (magic f) e (magic a)
  31.  
  32.     fun modify (f : elem -> elem) (a : array) : unit
  33.     = Word8Array.modify (magic f) (magic a)
  34.  
  35.     fun appi (f : int * elem -> unit) (a : array*int*int option) : unit
  36.     = Word8Array.appi (magic f) (magic a)
  37.  
  38.     fun foldli (f : int * elem * 'b -> 'b) (e : 'b) 
  39.                (a : array*int*int option) : 'b
  40.     = Word8Array.foldli (magic f) e (magic a)
  41.  
  42.     fun foldri (f : int * elem * 'b -> 'b) (e : 'b) 
  43.            (a : array*int*int option) : 'b 
  44.     = Word8Array.foldri (magic f) e (magic a)
  45.  
  46.     fun modifyi (f : int * elem -> elem) (a : array*int*int option) : unit
  47.     = Word8Array.modifyi (magic f) (magic a)
  48.  
  49. (*
  50.     val foldl    : (elem * 'b -> 'b) -> 'b -> array -> 'b
  51.                         = magic Word8Array.foldl
  52.     val foldr    : (elem * 'b -> 'b) -> 'b -> array -> 'b
  53.                         = magic Word8Array.foldr
  54.     val modify   : (elem -> elem) -> array -> unit
  55.                         = magic Word8Array.modify
  56.     val appi     : (int * elem -> unit) -> array*int*int option -> unit
  57.                         = magic Word8Array.appi
  58.     val foldli   : (int * elem * 'b -> 'b) -> 'b -> array*int*int option -> 'b
  59.                         = magic Word8Array.foldli
  60.     val foldri   : (int * elem * 'b -> 'b) -> 'b -> array*int*int option -> 'b
  61.                         = magic Word8Array.foldri
  62.     val modifyi  : (int * elem -> elem) -> array*int*int option -> unit
  63.                         = magic Word8Array.modifyi
  64. *)
  65. end
  66.  
  67.